package com.reporting.yb.framework.common.util.jwt;

import cn.hutool.jwt.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;



public class JwtUtil {

    // 密钥，用于生成和验证 JWT Token
    private static final String SECRET_KEY = "your_secret_key_here";

    // Token 过期时间（以毫秒为单位），这里设置为1小时
    private static final long EXPIRATION_TIME = 3600 * 1000;

    /**
     * 生成 JWT Token
     *
     * @param userId 用户ID
     * @return 生成的 JWT Token
     */
    public static String generateToken(String userId) {
        Map<String, Object> claims = new HashMap<>();
        claims.put("userId", userId);

        return Jwts.builder()
                .setClaims(claims)
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
                .signWith(SignatureAlgorithm.HS256, SECRET_KEY)
                .compact();
    }

    /**
     * 解析 JWT Token
     *
     * @param token JWT Token
     * @return 解析后的 Claims 对象
     */
//    public static Claims parseToken(String token) {
//        return Jwts.parserBuilder()
//                .setSigningKey(SECRET_KEY)
//                .build()
//                .parseClaimsJws(token)
//                .getBody();
//    }

    /**
     * 验证 JWT Token 是否有效
     *
     * @param token JWT Token
     * @return 如果 Token 有效返回 true，否则返回 false
     */
//    public static boolean validateToken(String token) {
//        try {
//            Jwts.parserBuilder()
//                    .setSigningKey(SECRET_KEY)
//                    .build()
//                    .parseClaimsJws(token);
//            return true;
//        } catch (Exception e) {
//            return false;
//        }
//    }

    /**
     * 获取 Token 中的 userId
     *
     * @param token JWT Token
     * @return userId
     */
//    public static String getUserIdFromToken(String token) {
//        Claims claims = parseToken(token);
//        return (String) claims.get("userId");
//    }
}